x86: Remove invlpg_works_ok and invlpg only single-page regions.
authorKeir Fraser <keir@xensource.com>
Wed, 17 Oct 2007 10:12:32 +0000 (11:12 +0100)
committerKeir Fraser <keir@xensource.com>
Wed, 17 Oct 2007 10:12:32 +0000 (11:12 +0100)
commit9255c493f176349d34576261c220b4fb7faafb4e
treee0dad031d700585fbfd94d527ef91f2bbe82a1ca
parent3e43914aa8f2b569d99da99ce412e3a47e1906c7
x86: Remove invlpg_works_ok and invlpg only single-page regions.

The flush_area_local() interface was unclear about whether a
multi-page region (2M/4M/1G) had to be mapped by a superpage, and
indeed some callers (map_pages_to_xen()) already would specify
FLUSH_LEVEL(2) for a region actually mapped by 4kB PTEs.

The safest fix is to relax the interface and do a full TLB flush in
these cases. My suspicion is that these cases are rare enough that the
cost of INVLPG versus full flush will be unimportant.

Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/cpu/amd.c
xen/arch/x86/cpu/common.c
xen/arch/x86/cpu/intel.c
xen/arch/x86/flushtlb.c
xen/arch/x86/setup.c
xen/include/asm-x86/flushtlb.h
xen/include/asm-x86/processor.h